TargetPlatform 列挙型に「linux」と「windows」を追加
まとめ
2 つの新しい値が追加されました。TargetPlatform
列挙型
switch ステートメントに追加のケースが必要になる可能性があります。
スイッチを入れるTargetPlatform
を含めないでくださいdefault:
場合。
コンテクスト
この変更の前は、TargetPlatform
enum には 4 つの値しか含まれていませんでした。
そして次のように定義されました。
enum TargetPlatform {
android,
fuchsia,
iOS,
macOS,
}
あswitch
ステートメントはこれらのケースを処理するためにのみ必要です。
Linux 上で実行したいデスクトップ アプリケーションや
Windows には通常、次のようなテストが含まれていました。main()
方法:
// Sets a platform override for desktop to avoid exceptions. See
// https://docs.flutter.dev/desktop#target-platform-override for more info.
void _enablePlatformOverrideForDesktop() {
if (!kIsWeb && (Platform.isWindows || Platform.isLinux)) {
debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;
}
}
void main() {
_enablePlatformOverrideForDesktop();
runApp(MyApp());
}
変更内容の説明
のTargetPlatform
enum は次のように定義されるようになりました。
enum TargetPlatform {
android,
fuchsia,
iOS,
linux, // new value
macOS,
windows, // new value
}
そしてプラットフォームテストの設定debugDefaultTargetPlatformOverride
のmain()
Linux および Windows では必要なくなりました。
これにより、Dart アナライザーで次のような結果が得られる可能性があります。missing_enum_constant_in_switch
に対する警告
を含まない switch ステートメントdefault
場合。
なしでスイッチを書き込むdefault:
ケースは
アナライザー以来、列挙型を処理する推奨方法
処理されていないケースを見つけるのに役立ちます。
移行ガイド
新しい列挙型に移行し、アナライザーのエラーを回避するにはmissing_enum_constant_in_switch
次のようなエラーが表示されます。
warning: Missing case clause for 'linux'. (missing_enum_constant_in_switch at [package] path/to/file.dart:111)
または:
warning: Missing case clause for 'windows'. (missing_enum_constant_in_switch at [package] path/to/file.dart:111)
コードを次のように変更します。
移行前のコード:
void dance(TargetPlatform platform) {
switch (platform) {
case TargetPlatform.android:
// Do Android dance.
break;
case TargetPlatform.fuchsia:
// Do Fuchsia dance.
break;
case TargetPlatform.iOS:
// Do iOS dance.
break;
case TargetPlatform.macOS:
// Do macOS dance.
break;
}
}
移行後のコード:
void dance(TargetPlatform platform) {
switch (platform) {
case TargetPlatform.android:
// Do Android dance.
break;
case TargetPlatform.fuchsia:
// Do Fuchsia dance.
break;
case TargetPlatform.iOS:
// Do iOS dance.
break;
case TargetPlatform.linux: // new case
// Do Linux dance.
break;
case TargetPlatform.macOS:
// Do macOS dance.
break;
case TargetPlatform.windows: // new case
// Do Windows dance.
break;
}
}
持っているdefault:
このような switch ステートメントの case はそうではありません。
アナライザーは検出に役立ちませんので、推奨します。
処理する必要があるすべてのケース。
また、上記で参照したようなテストで、debugDefaultTargetPlatformOverride
もう必要ありません
Linux および Windows アプリケーション用。
タイムライン
リリースされたバージョン: 1.15.4
安定版リリース: 1.17
参考文献
API ドキュメント:
TargetPlatform
関連する問題:
- 問題 #31366
関連する PR:
- Windows および Linux をターゲットプラットフォームとして追加